package com.redhat.lightblue.client.http.servlet;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import com.redhat.lightblue.client.LightblueClientConfiguration;
import com.redhat.lightblue.client.http.testing.doubles.FakeServletConfig;
import com.redhat.lightblue.client.http.testing.doubles.StubHttpServletRequest;
import com.redhat.lightblue.client.http.testing.doubles.StubInstance;
import org.apache.http.impl.client.CloseableHttpClient;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import java.net.MalformedURLException;
@RunWith(JUnit4.class)
public class LightblueDataProxyServletTest {
@Test
public void shouldUseDataServiceUriFromConfiguration() throws MalformedURLException, ServletException {
LightblueClientConfiguration config = new LightblueClientConfiguration();
config.setDataServiceURI("http://service.com/data");
LightblueDataProxyServlet servlet = new LightblueDataProxyServlet(
mock(CloseableHttpClient.class),
new StubInstance<>(config));
servlet.init(new FakeServletConfig());
HttpServletRequest request = new StubHttpServletRequest("http://myapp.com/data/find/thing",
"POST", "{\"test\":0}", "application/json", "/data/*");
assertEquals("http://service.com/data/find/thing", servlet.serviceUriForRequest(request));
}
@Test
public void shouldUseDataServiceUriFromServletInitParamOverConfiguration() throws ServletException,
MalformedURLException {
LightblueClientConfiguration config = new LightblueClientConfiguration();
config.setDataServiceURI("http://not.the.right.url/data");
LightblueDataProxyServlet servlet = new LightblueDataProxyServlet(
mock(CloseableHttpClient.class),
new StubInstance<>(config));
servlet.init(new FakeServletConfig()
.setInitParameter("dataServiceURI", "http://myservice.com/data"));
HttpServletRequest request = new StubHttpServletRequest("http://myapp.com/data/find/thing",
"POST", "{\"test\":0}", "application/json", "/data/*");
assertEquals("http://myservice.com/data/find/thing", servlet.serviceUriForRequest(request));
}
@Test
public void shouldNotBlowUpIfDataServiceUriHasTrailingSlash() throws ServletException,
MalformedURLException {
LightblueClientConfiguration config = new LightblueClientConfiguration();
LightblueDataProxyServlet servlet = new LightblueDataProxyServlet(
mock(CloseableHttpClient.class),
new StubInstance<>(config));
servlet.init(new FakeServletConfig()
.setInitParameter("dataServiceURI", "http://myservice.com/data/"));
HttpServletRequest request = new StubHttpServletRequest("http://myapp.com/data/find/thing",
"POST", "{\"test\":0}", "application/json", "/data/*");
assertEquals("http://myservice.com/data/find/thing", servlet.serviceUriForRequest(request));
}
}